{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "6dc6e0c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "import csv\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "\n",
    "import random\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "efb7e88c",
   "metadata": {},
   "outputs": [],
   "source": [
    "#라벨이랑 디스턴스 저장해놓은 값 불러오기\n",
    "\n",
    "real = []\n",
    "\n",
    "f = open(\"label__.csv\" , 'r')\n",
    "label_ = list(csv.reader(f, quoting = csv.QUOTE_NONNUMERIC))\n",
    "label_ = np.array(label_)\n",
    "label_ = label_.T\n",
    "f.close()\n",
    "\n",
    "\n",
    "f = open(\"distance.csv\" , 'r')\n",
    "pred = list(csv.reader(f, quoting = csv.QUOTE_NONNUMERIC))\n",
    "pred = np.array(pred)\n",
    "pred = pred.T\n",
    "f.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "6be95714",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1.])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "label_[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4a6c846c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 490000)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.shape(label_.T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6c88001c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(490000, 1)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.shape(pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1e47fc64",
   "metadata": {},
   "source": [
    "### ROC curve 그리기"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "8cd11e49",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "fpr, tpr, thresholds = roc_curve(label_, pred,pos_label=1)\n",
    "roc_score = roc_auc_score(label_, pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "69ad18fd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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zyc+Pp6ePXtSr149hgwZQlycL38FRSoVf65ReF2AHJIffviBrl277mvid8YZZ3DbbbcpJER8wp9BoTUKXygoKOCxxx6jSZMmfP7559SvX9/rkkSkHHz5lk45EfmWL1/OX//6Vz777DO6d+/O2LFjOe644w7+jSIScXwZFLrqKfLl5+ezatUqJk6cyCWXXKJRoIiP+TIodMqJTPPmzSMzM5NRo0aRlpbGihUr1J9JJAr4co1CI4rIsnPnTm677TbatGnDhAkT1MRPJMr4MiiUE5Fj5syZNG3alAcffJCrrrqKrKwsNfETiTL+nHpSUESEnJwcevfuTY0aNfjggw8444wzvC5JRELAn0GhVQpPzZo1i9NPP53U1FTeeecdGjduTEpKitdliUiI+HLqKeCzT+WLFlu2bKFfv3506NBhXxO/U045RSEhEuV8OaKIj/VlvvmWc47//Oc/DB48mK1btzJy5Eg18ROpRHwZFGr1FF433ngjTzzxBK1bt+aDDz4gPT3d65JEJIx8GRRazA495xx5eXkkJCRw/vnnc/zxx3PTTTcRGxvrdWkiEma+nMPRXb6h9f3339OlSxfuvPNOADp37swtt9yikBCppPwZFF4XEKUKCgp4+OGHSU9P56uvvqJhw4ZelyQiEcCnU0+Kior27bffcvnll/PFF19w3nnnMWbMGI455hivyxKRCODPoPC6gCgUCARYt24dr776KhdddJHCWET28WdQ6BxWIb744gsyMzO59957SUtL4/vvvychIcHrskQkwvh0jUJJcThyc3MZOnQop512Gi+88MK+Jn4KCREpiT+DQjlRbh999BHp6en861//4pprrlETPxE5KE09VSI5OTlceOGF1KhRg48++ohOnTp5XZKI+IBPRxRKikPx8ccfEwgE9jXxW7hwoUJCRILmz6DwugCf2Lx5MxdffDGdO3dm4sSJALRu3Zrk5GSPKxMRP9HUUxRyzvHqq6/yt7/9je3btzNq1Cg18RORcvNlUOijUMs2ePBgnnrqKU499VSee+450tLSvC5JRHzMl0GhmPi9QCBAfn4+CQkJXHDBBZx00kkMHjxY/ZlE5LCFdI3CzLqZ2TIzyzaz20t4/VIzW1j0Z46ZZQS34wov1de+++47zjjjDEaMGAFAp06d1OlVRCpMyILCzGKBp4DuQBpwsZkdOAfyA9DROdcU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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "plt.plot([0, 1], [0, 1], 'k--')    \n",
    "plt.axis([0, 1, 0, 1])    \n",
    "plt.xlabel('FPR')    \n",
    "plt.ylabel('TPR')    \n",
    "plt.plot(fpr, tpr)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "0a841a05",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot([0, 1], [0, 1], 'k--')    \n",
    "plt.axis([0, 1, 0, 1])    \n",
    "plt.xlabel('FAR')    \n",
    "plt.ylabel('FRR')    \n",
    "plt.plot(fpr[1:], 1-tpr[1:])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "f6a8bda7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9889269371559242"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "33ef1c11",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3e7fc6da",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "124aee32",
   "metadata": {},
   "source": [
    "### EER 찾기"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a21e816a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "EER =  9672\n",
      "0.0422\n",
      "EER =  9673\n",
      "0.0422\n"
     ]
    }
   ],
   "source": [
    "for i  in range(int(len(fpr))):\n",
    "    a = np.round(fpr[i],4)\n",
    "    b = np.round(1 - tpr[i],4)\n",
    "    if a == b:\n",
    "        EER= a\n",
    "        print('EER = ',i)\n",
    "        print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "bff2fb24",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x232d6fe3bb0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAncUlEQVR4nO3de3xcdZ3/8dcn18k9za3NpSVpG1px6RZoqVxF5CoKlu3+FPyJsqssu/Wy7M/9wfp4LFvX3Z/yc5XVRcXKT3Efasu6ggtY0VVBQApSCi1QaJumtzRpc7/PJJnk+/tjkjRNJ800nUvO5P18POYxM2fOzPkci+/zzfd8z/eYcw4REfG+lEQXICIi0aFAFxFJEgp0EZEkoUAXEUkSCnQRkSSRlqgNl5SUuOrq6kRtXkTEk1555ZVW51xpuM8SFujV1dVs27YtUZsXEfEkMzs41WfqchERSRIKdBGRJKFAFxFJEgnrQxc5HUNDQzQ0NBAIBBJdSlT5fD6qqqpIT09PdCmSBBTo4gkNDQ3k5eVRXV2NmSW6nKhwztHW1kZDQwM1NTWJLkeSwLRdLmb2PTNrNrM3pvjczOwbZlZnZjvN7PzolylzXSAQoLi4OGnCHMDMKC4uTrq/OiRxIulDfxi47hSfXw/Ujj7uAL595mWJnCyZwnxMMu6TJM60ge6cexZoP8UqNwH/7kJeBArNrDxaBZ5k/xvwg3uhozlmmxARiZWNOzeytXFrTH47GqNcKoHDE943jC47iZndYWbbzGxbS0vLzLZ2+C340Reha4bfF5mh1NRUVq5cOf44cOAAAPfffz8+n4+urq7xdZ955hkKCgo477zzWL58OZ/73OcSVLXMNt/e8W1eanopJr8djUAP9zdj2LtmOOc2OudWOedWlZaGvXJVZNbKysritddeG3+MTV2xadMmVq9ezWOPPXbC+pdddhmvvvoqr776Kk8++SS///3vE1C1zCbOOYIjQdJTYzOqKRqB3gAsnPC+CmiMwu+KzHr79u2jt7eXf/qnf2LTpk1h18nKymLlypUcOXIkztXJbBMcCQKQnhKbQI/GsMXHgU+Z2WZgDdDlnGuKwu+KhPftv4Z9r0X3N5eshL/811Ou4vf7WblyJQA1NTU89thjbNq0iVtuuYXLLruM3bt309zcTFlZ2Qnf6+joYO/evVx++eXRrVk8Z2hkCEhgoJvZJuAKoMTMGoB/ANIBnHMPAluA9wF1QD9we0wqFUmwsS6XiTZv3sxjjz1GSkoKN998Mz/5yU9Yv349AM899xwrVqxg9+7d3HPPPSxYsCABVctskvBAd87dMs3nDlgftYpEpjNNSzpedu7cyd69e7n66qsBGBwcZPHixeOBftlll/Hkk0+yZ88eLr30UtauXTvewpe5KdaBrrlcRGZo06ZNbNiwgQMHDnDgwAEaGxs5cuQIBw+eOLvp2Wefzd/93d9x3333JahSmS2GhkcDfRafFBWZkzZv3szatWtPWLZ27Vo2b9580rp33nknzz77LPv3749XeTILJbzLRURCent7T3gfLpy/9rWvjb++4oorxl9nZWVplIuMj3JJS4lN9KqFLiISJ0GnQBcRSQrDI8MApFpqTH5fgS4iEifDLhToaqGLiHjcWB+6WugiIh43HugpCnQREU8b73IxdbmIJFS46XNPNU3uww8/TGlpKStXrmT58uXcf//9CaxeZoOxk6Kx6kPXOHSRCIWby+XAgQPjl/j7/X7OO+881q5dyyWXXALAhz70IR544AHa2tpYtmwZ69atY+HChWF+XeaCsWGL6kMXmeVONU1ucXExS5cupalJE5HOZWMt9JSU2ESvWujiOff94T7ebn87qr+5vGg5d1949ynXCTd97kSnmib30KFDBAIBVqxYEbWaxXtG3AgQuxa6Al0kQuG6XODU0+Q+8sgjPP300+zevZvvfve7+Hy+OFYss40bvZmbhb3R25lToIvnTNeSjrdTTZM71oe+detWbrjhBq6//nrNiz6HjbXQUyw2XS7qQxeJklNNk3vRRRfx0Y9+lK9//esJqExmixEU6CKecappcu+++26+//3v09PTk4DKZDYI3Q9IXS4iCTd5+lwITZE71TS5NTU1fPzjHx//rKKigqNHj8a6TJnFxgPdYhPoaqGLiMSJulxERJJErLtcFOgiInEyPmxRXS4iIt6mYYsiIklirMslJUbRq0AXEYmTsRa6ulxEToffDz/+MXzxi6HnQOCMf3Ly9Llf/vKXgdDQxWXLlo0vX7duHQAbNmygsrKSlStXcs4557Bp06YzrkG8TZf+i5yul1+Ga66BYBD6+iAnB9avh1/9ClavnvHPTjWXC8CPfvQjVq1addLyu+66i8997nPs3buXCy64gHXr1pGenj7jGsTb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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(thresholds[1:],fpr[1:], color = 'orangered', label='FAR')\n",
    "plt.plot(thresholds[1:],1- tpr[1:], color = 'tab:green', label='FRR')\n",
    "plt.plot(thresholds[9673],fpr[9672],  'o' ,ms=7 ,color = 'red', label='EER')\n",
    "plt.legend() "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b6ff4e0",
   "metadata": {},
   "source": [
    "### jenuine imposter 그래프"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "5f8ab868",
   "metadata": {},
   "outputs": [],
   "source": [
    "f = open(\"genuin.csv\" , 'r')\n",
    "genuin = list(csv.reader(f, quoting = csv.QUOTE_NONNUMERIC))\n",
    "genuin = np.array(genuin)\n",
    "genuin = genuin.T\n",
    "f.close()\n",
    "\n",
    "\n",
    "f = open(\"imposter.csv\" , 'r')\n",
    "imposter = list(csv.reader(f, quoting = csv.QUOTE_NONNUMERIC))\n",
    "imposter = np.array(imposter)\n",
    "imposter = imposter.T\n",
    "f.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "20ba8a14",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(genuin, bins = 30, label='Genuin', density = True, stacked  = True)\n",
    "plt.hist(imposter, bins = 30, label='Imposter', density= True,stacked  = True)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "edfa1e7c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(475124, 1)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.shape(imposter)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e6750deb",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "downgrade",
   "language": "python",
   "name": "downgrade"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
